wget -c  https://github.com/OpenFunction/cli/releases/download/v0.5.1/ofn_linux_amd64.tar.gz -O - | tar -xz

chmod +x ofn && mv ofn /usr/local/bin/

OpenFunction CLI
OpenFunction CLI 相比原来的方式，功能更加全面，支持一键部署、一键卸载以及 Demo 演示的功能。用户可以通过设置相应的参数自定义地选择安装各个组件，同时可以选择特定的版本，使安装更为灵活，安装进程也提供了实时展示，使得界面更为美观。现在，你可以访问 ofn release[3] 选择 ofn CLI 的最新版本部署 OpenFunction 到你的集群。以 amd64 版本的 Linux 为例，仅需两步就能完成 OpenFunction CLI 的安装：

获取 OpenFunction CLI。

为 OpenFunction CLI 赋予权限并移动到 /usr/local/bin/ 文件夹下。

至此，OpenFunction CLI 安装完毕。OpenFunction CLI 支持三个子命令：install、uninstall 以及 demo ，下面我们将依次进行介绍。

install[4]
ofn install 解决了 OpenFunction 和 Kubernetes 的兼容问题，会自动根据 Kubernetes 版本选择兼容组件进行安装，同时提供多种参数以供用户选择。OpenFunction CLI 支持使用环境变量来定制依赖组件的版本，详细可以参考 CLI 环境变量设置[5]。

参数	功能
--all	用于安装 OpenFunction 及其所有依赖。
--async	用于安装 OpenFunction 的异步运行时（Dapr & Keda）。
--cert-manager *	用于安装 Cert Manager。
--dapr *	用于安装 Dapr。
--dry-run	用于提示当前命令所要安装的组件及其版本。
--ingress  *	用于安装 Ingress Nginx。
--keda  *	用于安装 Keda。
--knative	用于安装 Knative Serving（以Kourier为默认网关）
--region-cn	针对访问 gcr.io 或 github.com 受限的用户。
--shipwright *	用于安装 ShipWright。
--sync	用于安装 OpenFunction Sync Runtime（待支持）。
--upgrade	在安装时将组件升级到目标版本。
--verbose	显示粗略信息。
--version	用于指定要安装的 OpenFunction 的版本。（默认为 "v0.4.0"）
--timeout	设置超时时间。默认为5分钟。
表二 install 命令参数列表
注：为了避免过多的选项造成用户的误解，我们已经在帮助命令中隐藏了带*的参数，但你仍可以使用它。

install 示例
我们假设你已经按照上面的步骤下载了 ofn cli 并将其放在 PATH 中的适当路径下。你可以使用 ofn install --all 来完成一个简单的部署。默认情况下，该命令将为你安装 OpenFunction 的 v0.4.0 版本，而对于已经存在的组件，它将跳过安装过程（你可以使用 --upgrade 命令来覆盖这些组件）。

uninstall[6]
ofn uninstall 将帮助你卸载 OpenFunction 及其依赖，同时你可以根据相应的参数选择卸载指定的组件。在安装过程中，OpenFunction CLI 会在 $home/.ofn/inventory.yaml 中保留已安装的组件细节。所以在卸载过程中，OpenFunction CLI 会根据$home/.ofn/inventory.yaml 的内容删除相关组件。

参数	功能
--all	用于卸载 OpenFunction 及其所有依赖。
--async	用于卸载 OpenFunction 的异步运行时（Dapr & Keda）。
--cert-manager *	用于卸载 Cert Manager。
--dapr *	用于卸载 Dapr。
--ingress *	用于卸载 Ingress Nginx。
--keda *	用于卸载 KEDA。
--knative	用于卸载 Knative Serving（以 Kourier 为默认网关）。
--region-cn	针对访问 gcr.io 或 github.com 受限的用户。
--shipwright *	用于安卸载 shipWright。
--sync	用于卸载 penFunction 同步运行时（待支持）。
--verbose	显示粗略信息。
--version	用于指定要卸载的 OpenFunction 的版本。(默认为 "v0.4.0")
--timeout	设置超时时间。默认为5分钟。
表三 uninstall 命令参数列表
uninstall 示例
你可以使用 ofn uninstall --all 来轻松卸载 OpenFunction 及其依赖项（如果不加参数则表示只卸载 OpenFunction，不卸载其他组件）。

demo[7]
ofn demo  将帮助你创建一个 kind 集群，安装 OpenFunction 及其所有依赖并运行一个 sample 函数。

参数	功能
--region-cn	针对访问 gcr.io 或 github.com 受限的用户。
--auto-prune	自动清理当前的 kind 集群。该参数默认是 true，如果设置为 false ，将保留当前的 kind 集群。
--verbose	显示粗略信息。
--timeout	设置超时时间。默认为10分钟。
表四 demo 命令参数列表
demo示例
你可以使用 ofn demo 命令来创建一个 OpenFunction 的函数实例，该命令会创建一个 kind 集群并安装最新版本的 OpenFunction 来运行一个示例函数,该 kind 集群将在运行结束后自动删除。

OpenFunction 带来了我们所期望的对业务场景快速拆解重构的能力，开发人员可以专注于他们的开发意图，而不必关心底层运行环境和基础设施。但随着版本的迭代升级，原有的安装方式稍显笨重，于是我们改进了 OpenFunction CLI ，整个安装部署过程变得更为平滑、更为灵活，也更为简便。用户仅需一行命令，就可以根据自身需要进行安装、卸载与演示。同时，我们也在不断演进 OpenFunction ，将在之后版本中引入可视化界面，支持更多的  EventSource ,通过 WebAssembly 作为更加轻量的运行时等。

引用链接
[1]

OpenFunction: https://github.com/OpenFunction/OpenFunction.git

[2]
一键化脚本: https://github.com/OpenFunction/OpenFunction/tree/release-0.4#prerequisites

[3]
ofn release: https://github.com/OpenFunction/cli/releases/

[4]
install: https://github.com/OpenFunction/cli/blob/main/docs/install.md

[5]
CLI 环境变量设置: https://github.com/OpenFunction/cli/blob/main/docs/install.md#customize-components-installation

[6]
uninstall: https://github.com/OpenFunction/cli/blob/main/docs/uninstall.md

[7]
demo: https://github.com/OpenFunction/cli/blob/main/docs/demo.md

